Представленная ниже информация будет полезна при сборке пользовательского ядра c **kernel.org**. Данный метод компиляции ядра является традиционным методом, общим для всех дистрибутивов; однако, он отличается от установки ядра при помощи makepkg и pacman.

Вы также можете использовать ABS для сборки и установки своего ядра; смотрите: [Kernel Compilation](/index.php/Kernel_Compilation "Kernel Compilation"). Использование существующего PKGBUILD [из архива](https://www.archlinux.org/packages/?name=linux) позволит автоматизировать большинство процессов и создаст готовый установочный пакет. Хотя некоторые пользователи предпочитают традиционный метод сборки.

Начинающие пользователи, которые не в полной мере знакомы с компиляцией ядра, должны взглянуть на [Compilation without ABS for New Users](/index.php/Kernel_Compilation_without_ABS_for_New_Users "Kernel Compilation without ABS for New Users").

## Contents

*   [1 Получение исходников](#.D0.9F.D0.BE.D0.BB.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8.D1.81.D1.85.D0.BE.D0.B4.D0.BD.D0.B8.D0.BA.D0.BE.D0.B2)
*   [2 Конфигурирование](#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
    *   [2.1 Как насчет /usr/src/ ?](#.D0.9A.D0.B0.D0.BA_.D0.BD.D0.B0.D1.81.D1.87.D0.B5.D1.82_.2Fusr.2Fsrc.2F.C2.A0.3F)
*   [3 Компиляция и установка](#.D0.9A.D0.BE.D0.BC.D0.BF.D0.B8.D0.BB.D1.8F.D1.86.D0.B8.D1.8F_.D0.B8_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
*   [4 Выберите один из вариантов:](#.D0.92.D1.8B.D0.B1.D0.B5.D1.80.D0.B8.D1.82.D0.B5_.D0.BE.D0.B4.D0.B8.D0.BD_.D0.B8.D0.B7_.D0.B2.D0.B0.D1.80.D0.B8.D0.B0.D0.BD.D1.82.D0.BE.D0.B2:)
    *   [4.1 1\. Традиционный метод](#1._.D0.A2.D1.80.D0.B0.D0.B4.D0.B8.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.82.D0.BE.D0.B4)
    *   [4.2 2\. Использование makepkg и pacman (рекомендуется)](#2._.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_makepkg_.D0.B8_pacman_.28.D1.80.D0.B5.D0.BA.D0.BE.D0.BC.D0.B5.D0.BD.D0.B4.D1.83.D0.B5.D1.82.D1.81.D1.8F.29)
*   [5 Конфигурация загрузчика](#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D1.8F_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D1.87.D0.B8.D0.BA.D0.B0)
*   [6 Использование драйвера NVIDIA в ядре](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B4.D1.80.D0.B0.D0.B9.D0.B2.D0.B5.D1.80.D0.B0_NVIDIA_.D0.B2_.D1.8F.D0.B4.D1.80.D0.B5)

## Получение исходников

*   Вы можете получить исходники ядра на `ftp.xx.kernel.org/pub/linux/kernel/`, где xx определяет вашу страну (f.e. 'us', 'uk', 'de', ... - Ознакомьтесь [[1](http://www.kernel.org)] с полным списком зеркал). Если у вас нет графического ftp-клиента, воспользуйтесь командой `wget`. В этом примере мы будем скачивать и компилировать ядро версии 2.6.32.8; вам необходимо изменить только версию, чтобы получить новое ядро.

Например:

```
$ wget -c [http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.bz2 ]

```

*   Хорошей идеей будет проверка подписи полученного ядра. Взгляните на [http://kernel.org/signature.html](http://kernel.org/signature.html), чтобы узнать, как это сделать.
*   По существу:

```
$ gpg --import public-key.sign
$ gpg --verify detached-signature.sign kernel.tar.bz2

```

*   Скопируйте архив с ядром в вашу рабочую директорию.:

```
$ cp linux-2.6.32.8.tar.bz2 ~/kernelbuild/

```

*   Распакуйте архив и войдите в полученную директорию:

```
$ cd ~/kernelbuild
$ tar -xvjf linux-2.6.32.8.tar.bz2
$ cd linux-2.6.32.8

```

Подготовьтесь к компиляции посредством следующей команды:

```
make mrproper

```

Это может понадобиться для очистки каталогов после предыдущих компиляций. Разработчики ядра рекомендуют выполнять эту команду перед каждой компиляцией ядра.

## Конфигурирование

*   (Необязательно) Скопируйте файл .config вашего текущего ядра, если хотите модифицировать настройки ядра Arch, заданные по умолчанию.

```
 $ zcat /proc/config.gz > .config

```

*   Сконфигурируйте ваше ядро.

Традиционный путь:

```
$ make menuconfig        (Будет создана новая конфигурация и файл '.config'.)

```

Другие команды, которые могут быть использованы:

```
$ make oldconfig         (работает только со старым файлом '.config', копируя его в директорию, где проходит сборка. Также позволяет выбрать опции скачанного вами ядра, которые помечены как 'НОВЫЕ'.)
$ make localmodconfig    (пытается извлечь /proc/config.gz из работающего ядра. Допускает предварительный выбор опций/модулей.)
$ make localyesconfig    (Same as above, except that as many modules as possible compiled into the kernel.)
$ make xconfig           (Требует установки Qt. Приятный интерфейс.)
$ make gconfig           (Требует установки GTK.  Другая реализация xconfig.)
$ make help              (Справочная информация.)

```

*Примечание: более подробная информация о "localmodconfig" указана в [2.6.32 release notes](http://kernelnewbies.org/Linux_2_6_32#head-11f54cdac41ad6150ef817fd68597554d9d05a5f).*

*   Внесите изменения в конфигурацию ядра и сохраните конфигурационный файл. Это неплохая идея - делать его копию, поскольку вы можете испробовать несколько вариантов сборки, пока не получите тот, который действительно вас устроит.

*   Если вы компилируете ядро, используя текущий конфигурационный файл, не забудьте переименовать версию ядра, иначе вы можете по ошибке заменить существующее.

```
$ make menuconfig
General setup  --->
 (-ARCH) Local version - append to kernel release '3.n.n-RCn'

```

### Как насчет /usr/src/ ?

Вы можете использоввать директорию /usr/src/ для сборки ядра от пользователя root c предварительным созданием символической ссылки, хотя это считается плохой практикой. Наилучшим вариантом будет просто использовать вашу домашнюю директорию. Если вы согласны с этой точкой зрения, собирайте и конфигурируйте ваше ядро от имени непривилегированного пользователя и лишь устанавливайте от имени суперпользователя root, или при помощи makepkg и pacman (описано ниже).

Хотя эта концепция является предметом дискуссий и некоторые опытные пользователи рассматривают практику компилирования от root в /usr/src/ полностью безопасной, приемлемой и даже предпочтительной.

Используйте тот метод, с которым можете чувствовать себя более уверенно.

## Компиляция и установка

## Выберите один из вариантов:

#### 1\. Традиционный метод

**Осторожно:** Не запускайте `make all`, если вы используете GRUB и всё ещё имеете установленный LILO; в итоге это сконфигурирует LILO и вы можете не суметь загрузить вашу машину! Удалите LILO (pacman -R lilo) перед запуском `make all,если вы используете` GRUB!

*   Соберите его:

```
$ make

```

(Или make vmlinux && make modules && make bzImage - смотрите make help для получения подробной информации.)

*   Если у вас многоядерный процессор ( Dual Core, Quad Core, etc), вы можете компилировать ядро быстрее, добавив флаг -j . Это сработает на всех процессорах на 100% .

```
$ make -j[# число ядер + 1]

```

**Примечение:** Рекомендуется выставить число на один больше, чем имеется ядер в вашей машине. Например: для двухъядерной машины вы можете выставить значение make -j3\. Двухъядерный процессор с 2.8Ghz компилирует ядро за 10-15 минут.

*   Установка модулей: ( предстоит сделать с правами root.)

```
# make modules_install

```

Это скопирует скомпилированные модули в директорию /lib/modules с именем версии ядра. Эти модули будут храниться отдельно от тех, что уже используются другими ядрами в системе.

*   Копирование ядра:

```
# cp -v arch/x86/boot/bzImage /boot/vmlinuz-НазваниеВашегоЯдра

```

*   Если вам нужны какие-либо модули для того, чтобы смонтировать корневую файловую систему, создайте виртуальный диск (большинству пользователей это нужно). The -k parameter accepts the kernel version and appended string you set in menuconfig and is used to locate the modules in /lib/modules::

```
# mkinitcpio -k ПолноеНазваниеЯдра -g /boot/initramfs-НазваниеВашегоЯдра.img

```

Вы можете назвать ядро при копировании в /boot как вам угодно. Однако, использование схемы [kernel-major-minor-revision] поможет поддержать порядок, если вы имеете несколько ядер/часто используете mkinitcpio/собираете сторонние модули.

Если вы используете LILO и он не может взаимодействовать с kernel device-mapper driver, в первую очередь запустите `modprobe dm-mod`.

#### 2\. Использование makepkg и pacman (рекомендуется)

Смотрите [Kernel Compilation](/index.php/Kernel_Compilation "Kernel Compilation").

## Конфигурация загрузчика

Добавьте строку для загрузки вашего нового ядра в [GRUB](/index.php/GRUB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "GRUB (Русский)") или [LILO](/index.php/LILO "LILO") как указано в примерах. Заметим, что если у вас установлен LILO, исходные тексты ядра содержат скрипт для автоматизации процесса:

```
$ arch/i386/boot/install.sh

```

При использовании LILO, не забудьте скомандовать `lilo` как root, чтобы обновить его.

## Использование драйвера NVIDIA в ядре

Об использовании драйвера NVIDIA в ядре смотрите: [Installing the driver for a custom kernel](/index.php/NVIDIA "NVIDIA"). Также вы можете установить драйвер nvidia из AUR.